enum ShapeKinx {
    Circle,
    Square
}

interface Circle {
    kind:ShapeKinx.Circle,
    radius:number
}

interface Square {
    kind:ShapeKinx.Square,
    radius:number
}
// 变量C 是 Circle 类型的 
let c:Circle = {
    // Circle 的 kind 属性是 ShapeKinx.Circle 此处是  ShapeKinx.Square 报错
    kind:ShapeKinx.Square,
    radius:100
}

enum E {
    Foo,
    Bar,
}

function f(x: E) {
    // X 是枚举类型的 里面就两个类型 不是Foo那就必须是Bar了鸡贼的TS
    if (x !== E.Foo || x !== E.Bar) { // 此条件将始终返回 "true"，因为类型 "E.X" 和 "E.Bar" 没有重叠。
        //             ~~~~~~~~~~~
        // Error! Operator '!==' cannot be applied to types 'E.Foo' and 'E.Bar'.
    }
}